
#ifndef DESIGN_PATTERNS_MEMENTO_SYSTEM_H_
#define DESIGN_PATTERNS_MEMENTO_SYSTEM_H_

class State;

class System
{
private:
  int version_;

public:
  explicit System(int version);

  State* CreateBacktrackPoint() const;

  void BacktrackPoint(State* state);

  void Upgrade();

  void Run() const;
};

#endif //DESIGN_PATTERNS_MEMENTO_SYSTEM_H_
